// 第11节：Koa2中使用cookie

/**
 *开发中制作登录和保存用户信息在本地，最常用的就是cookie操作。比如我们在作一个登录功能时，希望用户在接下来的一周内都不需要重新登录就可以访问资源，这时候就需要我们操作cookie来完成我们的需求。koa的上下文（ctx）直接提供了读取和写入的方法。
 * 
 */ 

/** cookie方法使用
 * 
 * 获取：
 *      ctx.cookies.get(name,[optins]):读取上下文请求中的cookie。
 * 
 * 设置：
 *      ctx.cookies.set(name,value,[options])：在上下文中写入cookie。
 * 
 * */  


 const Koa=require('koa');
 const App=new Koa();

 App.use(async (ctx)=>{
     if(ctx.url=='/index'){
         ctx.cookies.set(
             'myName','Dfei',{
                 domain:'localhost', //写COOKIE所在的域名  就算你是在Localhost这个域名下，我也不会生成这个cookie
                 path:'/index',  //写cookie所在的路径    如果访问的是localhost:3000/aa，则读取不到cookie,访问localhost:3000/index/aa,就可以拿到。  这就是这个path路径搞的鬼， 这里注意一下，如果需要全局，path配/就可以了
                 maxAge:1000*60*60*24*365,  //cookie有效期
                 expires:new Date('2019-12-1'),  //cookie失效时间
                 httpOnly:false,  //是否只用于http请求
                 overwrite:false,  //是否允许重写
             }
         )
         ctx.body=ctx.cookies.get('myName')+'cookie 已 OK'
     }else{
         if(ctx.cookies.get('myName')){  
             ctx.body=ctx.cookies.get('myName')
         }else{
            ctx.body='cookie is no'
         }
         
     }
 })


 App.listen(3000,()=>{
     console.log('服务启动成功')
 })